Home Office Hours My Courses Customize Your Courses What Is Programming? Proof Of Programming Knowledge? Who Is Prof. Chapman?

What Is Programming?

Most people are not sure what "programming" means. They know that computers are involved. They suspect that being able to use apps gives a head start on making apps. But they're unsure what kind of education or experience is needed to make apps.

Programming has a technical definition. Like most techical definitions it doesn't make sense until you learn more about the field.

When I was a student I had no idea how the courses I was taking related to each other. After you work through this page you'll know how the CISP Computer Science courses are related.

I'll use an analogy to explain what you'll learn in the first course in the programming sequence - CISP 300. Then I'll extend the analogy into the other transfer Computer Science courses:

(I've left CISP 440 out of the list because it doesn't fit the analogy. CISP 440 is necessary for transfer and for the CRC Computer Science certificate. CISP 440 is not a pure programming course, but a mashup of formal math/logic and programming.)

My Programming Analogy

Perhaps you've seen competition cooking shows like "Top Chef". Chefs are invited to compete against each other. Each chef is given the same set of ingredients. They then have to create a meal from these ingredients. They do not have recipes.

How can a chef create meals without recipes?

This requires much practice, learning many different cooking techniques, and learning how to combine flavors and textures.

Let's look at the steps in their journey to becoming a master chef.

What Chef had to learn

Every master chef started out knowing nothing. They did not know how to

Chefs learned these techniques through following recipes and with help from knowledgeable chefs. The recipe listed the amount of each ingredient and spice. The recipe gave the size to cut vegetables into. The recipe gave approximate times and temperatures for each step of the cooking process.

Eventually chefs internalized the techniques. They then began to generalize from the recipes they'd followed. They likely began to focus on a particular cuisine, like Cajun. They began to mix together ideas from different cuisines, like fusing Chinese and soul food. They developed ways to create flavorful meals without a recipe:

So what does this have to do with programming?

In my analogy the chef (programmer) combines techniques and ingredients into a new solution to the problem of what to eat. These steps and ingredients can be written as a recipe (program).

Now let's mix up my interpretation of cooking competitions and the CRC programming courses.

The start of a Top Chef competition:

"Here's a bar of dark chocolate, a mango, a head of cabbage, and a pork chop.
You have access to cooking equipment and spices and vinegars and oils and herbs and
garlic and ginger.

You have 30 minutes to make a dinner entree.

Go!"

Chef first uses their experience mixing together flavors and textures. They create a plan for the entree. Then chef must know how to deal with the given ingredients - melt chocolate, prepare a mango, steam cabbage, grill a pork chop - to make their plan work.

Learning to create a plan for a program, and learning the basic techniques of programming, happens in CISP 300.

Then chef must decide on a cooking style for their dish. Perhaps they will use Vietnamese cuisine ideas.

Programming in a particular style (programming language) starts in CISP 300. It really takes off in CISP 360 using C++.

If chef's dish didn't quite work out for that Top Chef competition, they may decide to get better with Vietnamese cooking and ingredients.

Getting better at a particular programming language are CISP 400 and CISP 430.

Then chef gets invited back to Top Chef. They're ready with all of their Vietnamese cooking techniques. But the new challenge is to make a meal with Eastern European ingredients like cream, beets, onions, and potatoes. Yikes!

This changing of the ingredients and learning to cook in a new way is like CISP 310 using Assembly language.


What Is Programming?

Programming is not copying someone's program and making small changes to it. That's like following a recipe and making little edits.

It's applying all of your techniques and knowledge to creating a brand new customized app to each problem.

The course sequence CISP 300, CISP 400, CISP 430, CISP 310 will build up your technique and knowledge step by step.

These courses won't help with dinner. You're on your own for that :)


Last updated December 15, 2022